<?php

namespace apps\common\models;

use mix\facades\PDO;

/**
 * 模型类
 * 这是一个数据模型范例 (关系型数据库)
 * 一个数据模型对应一个数据表，数据表是公用的，所以数据模型应该在公共模块
 * 数据模型是使用组件操作数据库，所以不需要继承任何基类
 * @author 林枫 <76299831@qq.com>
 */
class MasterModel
{

    private $table;

    function __construct($table)
    {
        $this->table = $table;
    }

    /**拼接表前缀 链式调用
     * @param string $table
     * @return MasterModel
     */
    static public function init($table = '')
    {
        $table_prefix = app()->table_prefix;
        $table = $table_prefix . $table;
        return new MasterModel($table);
    }

    /**插入
     * @param $data
     * @return bool
     */
    public function insert($data)
    {
        $success = PDO::insert($this->table, $data)->execute();
        return $success ? PDO::getLastInsertId() : false;
    }

    /**获取全部记录
     * @return mixed
     */
    public function getAll()
    {
        return PDO::createCommand("SELECT * FROM `" . $this->table . "`")->queryAll();
    }

    /**获取一条
     * @param array $where
     * @return mixed
     */
    public function getOne($where = array())
    {
//        app()->dump($where,true);
//        app()->dump($this->table,true);
        return PDO::createCommand([['SELECT * FROM `' . $this->table . '`'], $where])->queryOne();

    }


    public function getList($where = array())
    {
        return PDO::createCommand([
            ['SELECT * FROM `' . $this->table . '`'],
            $where,
        ])->queryAll();
    }

}